package slic.puntajes;

import java.io.IOException;
import java.util.List;

import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
import javax.portlet.PortletException;

import slic.model.Equipo;
import slic.model.Inscripcion;
import slic.model.Partido;
import slic.model.Puntaje;
import slic.service.EquipoLocalServiceUtil;
import slic.service.InscripcionLocalServiceUtil;
import slic.service.PartidoLocalServiceUtil;
import slic.service.PuntajeLocalServiceUtil;

import com.liferay.portal.kernel.exception.SystemException;
import com.liferay.portal.kernel.log.Log;
import com.liferay.portal.kernel.log.LogFactoryUtil;
import com.liferay.portal.kernel.servlet.SessionErrors;
import com.liferay.portal.kernel.servlet.SessionMessages;
import com.liferay.portal.kernel.util.WebKeys;
import com.liferay.portal.model.User;
import com.liferay.portal.theme.ThemeDisplay;

public class Puntajes {

	private static Log _log = LogFactoryUtil.getLog(Puntajes.class);

	public static void savePuntaje(ActionRequest actionRequest,
			ActionResponse actionResponse) throws IOException, PortletException, SystemException {
		
		String deportistaId = actionRequest.getParameter("deportistaId");
		String partidoId = actionRequest.getParameter("partidoId");
		String pruebaId = actionRequest.getParameter("pruebaId");
		String puntos = actionRequest.getParameter("puntos");
		String equipoId = "";
		
		Partido partido = PartidoLocalServiceUtil.fetchPartido(Long.valueOf(partidoId));
		
		
		if (deportistaId == null || deportistaId.trim().equals("") || deportistaId.trim().equals("-1")) {
			SessionErrors.add(actionRequest, "no-deportista");
		}
		if (pruebaId == null || pruebaId.trim().equals("") || pruebaId.trim().equals("-1")) {
			SessionErrors.add(actionRequest, "no-prueba");
		}
		if (puntos == null || puntos.trim().equals("")) {
			SessionErrors.add(actionRequest, "no-puntaje");
		}
		else{
			
			try {
				Long.valueOf(puntos);
			}
			catch (Exception e) {
				SessionErrors.add(actionRequest, "puntaje-no-es-numero");
			}
		}
		
		List<Inscripcion> listInscripcion = InscripcionLocalServiceUtil.findByDeportistaId(Long.valueOf(deportistaId));
		if(listInscripcion != null){
			for (Inscripcion inscripcion : listInscripcion) {
				Equipo equipo = EquipoLocalServiceUtil.fetchEquipo(inscripcion.getEquipoId());
				if(equipo.getCategoriaId() == partido.getCategoriaId())
					equipoId = String.valueOf(equipo.getEquipoId());
			}
		}
	
		if (!SessionErrors.isEmpty(actionRequest)) {
			actionResponse.setRenderParameter("jspPage", "/html/puntajes/edit.jsp");
			actionResponse.setRenderParameter("partidoId", String.valueOf(partidoId));
			return;
		}

		try {
			ThemeDisplay themeDisplay = (ThemeDisplay)actionRequest.getAttribute(WebKeys.THEME_DISPLAY);
			User currentUser = themeDisplay.getUser();

			Puntaje puntaje;
				// Creación Process Document
				PuntajeLocalServiceUtil.add(Long.valueOf(deportistaId),Long.valueOf(equipoId),
						Long.valueOf(partidoId),Long.valueOf(pruebaId),Long.valueOf(puntos));
			actionResponse.setRenderParameter("partidoId", String.valueOf(partidoId));
			actionResponse.setRenderParameter("jspPage", "/html/puntajes/view.jsp");
		} catch (Exception e) {
			_log.error(e);
			SessionErrors.add(actionRequest, "unknow-error");
		}

	}

	public static void eliminarPuntaje(ActionRequest actionRequest,
			ActionResponse actionResponse) throws IOException, PortletException, SystemException {

		String puntajeId = actionRequest.getParameter("puntajeId");

		Puntaje puntaje = PuntajeLocalServiceUtil.fetchPuntaje(Long.valueOf(puntajeId));

		PuntajeLocalServiceUtil.deletePuntaje(puntaje);
		SessionMessages.add(actionRequest, "puntaje-eliminado");

		actionResponse.setRenderParameter("jspPage", "/html/puntajes/view.jsp");
		actionResponse.setRenderParameter("partidoId", String.valueOf(puntaje.getPartidoId()));

	}


}
